<?php

class Aduanas_DetallegruposusuarioController extends Zend_Controller_Action {

    public function init() {
        /* Initialize action controller here  edite para probar */
        /* Initialize action controller here */
        $parametrosNamespace = new Zend_Session_Namespace('parametros');
        $parametrosNamespace->unlock();
        $parametrosNamespace->parametrosBusqueda = null;
        $parametrosNamespace->cantidadFilas = null;
        $parametrosNamespace->Application_Model_DbTable = "Application_Model_DbTable_Detgrupousuario";
        $parametrosNamespace->lock();
    }

    public function indexAction() {
        
    }

    public function listarAction() {

        $this->_helper->viewRenderer->setNoRender(true);

        $parametrosNamespace = new Zend_Session_Namespace('parametros');
        $parametrosNamespace->unlock();
        $cantidadFilas = $this->getRequest()->getParam("rows");
        if (!isset($cantidadFilas)) {
            $cantidadFilas = 10;
        }
        $parametrosNamespace->cantidadFilas = $cantidadFilas;
        $page = $this->getRequest()->getParam("page");
        if (!isset($page)) {
            $page = 1;
        }
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('d' => 'det_grupo_usuario'), array(
                    'd.id_det_grupo_usuario',
                    'd.cod_grupo_usuario',
                    'g.desc_grupo_usuario',
                    'd.cod_aplicacion',
                    'a.desc_aplicacion',
                    'd.permiso_insert',
                    'd.permiso_update',
                    'd.permiso_delete',
                    'd.permiso_list',
                    'd.permiso_otros'))
                ->join(array('g' => 'grupo_usuario'), 'd.cod_grupo_usuario = g.cod_grupo_usuario')
                ->join(array('a' => 'aplicacion'), 'd.cod_aplicacion = a.cod_aplicacion');

//        die($select);
        $result = $db->fetchAll($select);
        $this->view->headScript()->appendFile($this->view->baseUrl() . '/js/bootstrap.js');
        $this->view->headScript()->appendFile($this->view->baseUrl() . '/js/gridDetallegruposusuario.js');
        $pagina = self::obtenerPaginas($result, $cantidadFilas, $page);
        echo $this->_helper->json($pagina);
    }

    public function buscarAction() {

        $this->_helper->viewRenderer->setNoRender(true);

        $parametrosNamespace = new Zend_Session_Namespace('parametros');
        $parametrosNamespace->unlock();
        $cantidadFilas = $this->getRequest()->getParam("rows");
        if (!isset($cantidadFilas)) {
            $cantidadFilas = 10;
        }
        $parametrosNamespace->cantidadFilas = $cantidadFilas;
        $page = $this->getRequest()->getParam("page");
        if (!isset($page)) {
            $page = 1;
        }
        $json_rowData = $this->getRequest()->getParam("data");
        $rowData = json_decode($json_rowData);

        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('d' => 'det_grupo_usuario'), array(
                    'd.id_det_grupo_usuario',
                    'd.cod_grupo_usuario',
                    'g.desc_grupo_usuario',
                    'd.cod_aplicacion',
                    'a.desc_aplicacion',
                    'd.permiso_insert',
                    'd.permiso_update',
                    'd.permiso_delete',
                    'd.permiso_list',
                    'd.permiso_otros'))
                ->join(array('g' => 'grupo_usuario'), 'd.cod_grupo_usuario = g.cod_grupo_usuario')
                ->join(array('a' => 'aplicacion'), 'd.cod_aplicacion = a.cod_aplicacion');
       
        if(isset($rowData->grupousuario) && isset($rowData->aplicacion)){
             $select->where("g.desc_grupo_usuario like '%".$rowData->grupousuario."%' 
                              and a.desc_aplicacion like '%".$rowData->aplicacion."%'");
        } else {
            if ($rowData->grupousuario != "" && isset($rowData->grupousuario))
                $select->where("g.desc_grupo_usuario like ?", "%".$rowData->grupousuario."%");
            if ($rowData->aplicacion != "" && isset($rowData->aplicacion))
                $select->where("a.desc_aplicacion like ?", "%".$rowData->aplicacion."%");
        }
             

//        die($select);
        $result = $db->fetchAll($select);
        $this->view->headScript()->appendFile($this->view->baseUrl() . '/js/bootstrap.js');
        $this->view->headScript()->appendFile($this->view->baseUrl() . '/js/gridDetallegruposusuario.js');
        $pagina = self::obtenerPaginas($result, $cantidadFilas, $page);
        echo $this->_helper->json($pagina);
    }

    private function obtenerPaginas($result, $cantidadFilas, $page) {
        $this->_paginator = Zend_Paginator::factory($result);
        $this->_paginator->setItemCountPerPage($cantidadFilas);
        $this->_paginator->setCurrentPageNumber($page);
        $pagina ['rows'] = array();
        foreach ($this->_paginator as $item) {
            $permiso_insert = ($item["permiso_insert"] == 'S') ? "SI" : "NO";
            $permiso_update = ($item["permiso_update"] == 'S') ? "SI" : "NO";
            $permiso_delete = ($item["permiso_delete"] == 'S') ? "SI" : "NO";
            $permiso_list = ($item["permiso_list"] == 'S') ? "SI" : "NO";
            $permiso_otros = ($item["permiso_otros"] == 'S') ? "SI" : "NO";


            $arrayDatos ['cell'] = array(
            null,
            $item['id_det_grupo_usuario'],
            $item['cod_grupo_usuario'],
            $item['desc_grupo_usuario'],
            $item['cod_aplicacion'],
            $item['desc_aplicacion'],
            $permiso_insert,
            $permiso_update,
            $permiso_delete,
            $permiso_list,
            $permiso_otros
            );
            $arrayDatos ['columns'] = array(
                'modificar',
                'id_det_grupo_usuario',
                'cod_grupo_usuario',
                'desc_grupo_usuario',
                'cod_aplicacion',
                'desc_aplicacion',
                'permiso_insert',
                'permiso_update',
                'permiso_delete',
                'permiso_list',
                'permiso_otros',
            );
            array_push($pagina ['rows'], $arrayDatos);
        }

        if ($cantidadFilas == 0)
            $cantidadFilas = 10;

        $pagina ['records'] = count($result);
        $pagina ['page'] = $page;
        $pagina ['total'] = ceil($pagina ['records'] / $cantidadFilas);

        if ($pagina['records'] == 0) {
            $pagina ['mensajeSinFilas'] = true;
        }

        $parametrosNamespace = new Zend_Session_Namespace('parametros');
        $parametrosNamespace->unlock();
        $parametrosNamespace->listadoCompras = $pagina ['rows'];
        $parametrosNamespace->lock();

        return $pagina;
    }

    public function grupodataAction() {
//        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('g' => 'grupo_usuario'))
                ->where("g.activo = ?", 'S')
                ->order(array('g.desc_grupo_usuario')
        );
        $result = $db->fetchAll($select);

        echo json_encode($result);
    }

    public function aplicaciondataAction() {
//        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('a' => 'aplicacion'))
                ->where("a.activo = ?", 'S')
                ->order(array('a.desc_aplicacion'));
        $result = $db->fetchAll($select);

        echo json_encode($result);
    }

    public function validaaplicacionAction() {
//        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $datos = trim($this->getRequest()->getParam("parametro"));
        $db = Zend_Db_Table::getDefaultAdapter();
        $select = $db->select()
                ->from(array('a' => 'aplicacion'), array('a.cod_aplicacion', 'a.cod_modulo', 'a.desc_aplicacion'))
                ->where("a.desc_aplicacion = ?", $datos);
//                
        $result = $db->fetchAll($select);
//        print_r($result);
//         die();
//        
        $option = array();
        foreach ($result as $value) {
            $cod_aplicacion = ($value ['cod_aplicacion']);
            $cod_modulo = $value ['cod_modulo'];
            $desc_aplicacion = $value ['desc_aplicacion'];
            $option = array("cod_aplicacion" => $cod_aplicacion, "cod_modulo" => $cod_modulo, "desc_aplicacion" => $desc_aplicacion);
        }
//        echo $option;
        echo json_encode($option);
    }

    public function guardarAction() {

//		$this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $dataGrilla = $this->getRequest()->getParam("dataGrilla");
        $dataLength = $this->getRequest()->getParam("dataLength");
        $id_editar = $this->getRequest()->getParam("id_editar");

        $Model_class = new Application_Model_Detgrupousuario();
        self::almacenarDatos($Model_class, $dataGrilla, $dataLength, $id_editar);
    }

    public function almacenarDatos($Model_class, $dataGrilla, $dataLength, $id_editar) {
        try {
            $db = Zend_Db_Table::getDefaultAdapter();
            $db->beginTransaction();
            if ($id_editar > 0 && $id_editar == null) {
                $id_editar = 0;
            }

            $servCompra = new Application_Model_DataService("Application_Model_DbTable_Detgrupousuario");

            if ($dataLength > 0) {
                $i = 0;
                foreach ($dataGrilla as $fila) {
                    $i++;
                    $permiso_insert = ($fila["insert"] == 'SI') ? "S" : "N";
                    $permiso_update = ($fila["update"] == 'SI') ? "S" : "N";
                    $permiso_delete = ($fila["delete"] == 'SI') ? "S" : "N";
                    $permiso_list = ($fila["list"] == 'SI') ? "S" : "N";
                    $permiso_otros = ($fila["otros"] == 'SI') ? "S" : "N";
                    
                    $Model_class->setId_det_grupo_usuario($id_editar);
                    $Model_class->setCod_grupo_usuario($fila["grupoid"]);
                    $Model_class->setCod_aplicacion($fila["aplicacioncod"]);
                    $Model_class->setPermiso_insert($permiso_insert);
                    $Model_class->setPermiso_update($permiso_update);
                    $Model_class->setPermiso_delete($permiso_delete);
                    $Model_class->setPermiso_list($permiso_list);
                    $Model_class->setPermiso_otros($permiso_otros);

                    $codDetGrupo = $servCompra->saveRow($Model_class);
                }
                $db->commit();

                echo json_encode(array("result" => "EXITO"));
            } else {
                echo json_encode(array("result" => "Datos Vacios"));
            }
        } catch (Exception $e) {
            echo json_encode(array("result" => "ERROR", "mensaje" => $e->getCode(), "errotname" => $e->getMessage(),
                "otro" => $e->getFile(), "linea" => $e->getLine()));
            $db->rollBack();
        }
    }

    public function eliminarAction() {
//        $this->_helper->layout->disableLayout();
        $this->_helper->viewRenderer->setNoRender(true);
        $id = $this->getRequest()->getParam("id");
        try {
            $db = Zend_Db_Table::getDefaultAdapter();
            $db->beginTransaction();
            $servCon = new Application_Model_DataService("Application_Model_DbTable_Detgrupousuario");
            $servCon->deleteRowById(array("id_det_grupo_usuario" => $id));
            $db->commit();
            echo json_encode(array("result" => "EXITO"));
        } catch (Exception $e) {
            echo json_encode(array("result" => "ERROR", "mensaje" => $e->getCode()));
            $db->rollBack();
        }
    }

}

